home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 6984 / 6984.xpi / chrome / lazarus.jar / content / options.js < prev    next >
Text File  |  2009-11-24  |  10KB  |  286 lines

  1.  
  2.  
  3. Lazarus.db = Lazarus.getBrowser().Lazarus.db;
  4. Lazarus.Crypto = Lazarus.getBrowser().Lazarus.Crypto;
  5. Lazarus.getString = Lazarus.getBrowser().Lazarus.getString;
  6.  
  7.  
  8. /**
  9. * enables/disabled the expire save forms textbox
  10. */
  11. function toggleExpireSaveForms(enabled, focusOnTextField){
  12.     Lazarus.$('extensions-lazarus-expireSavedFormsInterval').disabled = !enabled;
  13.     Lazarus.$('extensions-lazarus-expireSavedFormsUnit').disabled = !enabled;
  14.     if (enabled && focusOnTextField){
  15.         Lazarus.$('extensions-lazarus-expireSavedFormsInterval').focus();
  16.     }
  17. }
  18.  
  19. /**
  20. * set initial state of expire save forms textbox
  21. */
  22. function initExpireSaveForms(){
  23.     toggleExpireSaveForms(Lazarus.$('extensions-lazarus-expireSavedForms').checked);
  24. }
  25.  
  26. /**
  27. * disable RemoveForms button if there are no forms to remove
  28. */
  29. function initRemoveForms(){
  30.     var iForms = Lazarus.db.getInt("SELECT COUNT(*) as cnt FROM forms WHERE savetype != "+ Lazarus.FORM_TYPE_TEMPLATE);
  31.     iForms += Lazarus.db.getInt("SELECT COUNT(*) as cnt FROM textdata");
  32.     Lazarus.$('extensions.lazarus.removeForms').disabled = (iForms == 0);
  33. }
  34.  
  35.  
  36. /**
  37. * disable RemoveTemplates button if there are no templates to remove
  38. */
  39. function initRemoveTemplates(){
  40.     var iForms = Lazarus.db.getInt("SELECT COUNT(*) as cnt FROM forms WHERE savetype = "+ Lazarus.FORM_TYPE_TEMPLATE);
  41.     Lazarus.$('extensions.lazarus.removeTemplates').disabled = (iForms == 0);
  42. }
  43.  
  44.  
  45. function enterPassword(){
  46.   if (!Lazarus.getBrowser().Lazarus.canDecrypt() && Lazarus.getBrowser().Lazarus.isPasswordSet()){
  47.         return askForPassword();
  48.     }
  49.     else {
  50.         return true;
  51.     }
  52. }
  53.  
  54. /**
  55. * disable RemoveTemplates button if there are no templates to remove
  56. */
  57. function initTextLinks(){
  58.     var labels = document.getElementsByTagName("label");
  59.     for (var i=0; i<labels.length; i++){
  60.         var label = labels[i];
  61.         if (label.getAttribute("class").indexOf("text-link") > -1){
  62.             label.addEventListener("click", function(){
  63.                 Lazarus.getBrowser().Lazarus.openURL(this.getAttribute("href"), true, true);
  64.             }, true);
  65.         }
  66.     }
  67. }
  68.  
  69.  
  70. /**
  71. * empty the saved forms database
  72. */
  73. function removeForms(){
  74.         Lazarus.getBrowser().Lazarus.removeForms(Lazarus.db.getColumn("SELECT id FROM forms WHERE savetype != "+ Lazarus.FORM_TYPE_TEMPLATE));
  75.         Lazarus.db.exe("DELETE FROM textdata");
  76.     Lazarus.db.exe("DELETE FROM textdata_fulltext");
  77.     Lazarus.getBrowser().Lazarus.editorInfos = [];
  78.     initRemoveForms();
  79.     initDBStats();
  80. }
  81.  
  82. /**
  83. * empty the saved forms database
  84. */
  85. function removeTemplates(){
  86.         Lazarus.getBrowser().Lazarus.removeForms(Lazarus.db.getColumn("SELECT id FROM forms WHERE savetype = "+ Lazarus.FORM_TYPE_TEMPLATE));
  87.     initRemoveTemplates();
  88.     initDBStats();
  89. }
  90.  
  91. /**
  92. */
  93. function openChangePasswordDialog(){
  94.     window.open("chrome://lazarus/content/password.xul", "LazarusSetPassword", "chrome,dialog,modal,resizable,centerscreen");
  95.     //we had better alter the UI to reflect any changes made to the password
  96.     Lazarus.getBrowser().Lazarus.unloadPrivateKey();
  97.     refreshPasswordButtons();
  98. }
  99.  
  100. /**
  101. */
  102. function openResetPasswordDialog(){
  103.     window.open("chrome://lazarus/content/password-reset.xul", "LazarusResetPassword", "chrome,dialog,modal,resizable,centerscreen");
  104.     //we had better alter the UI to reflect any changes made to the password
  105.     Lazarus.getBrowser().Lazarus.unloadPrivateKey();
  106.     Lazarus.getBrowser().Lazarus.loadPrivateKey();
  107.     refreshPasswordButtons();
  108. }
  109.  
  110.  
  111.  
  112. /**
  113. */
  114. function refreshPasswordButtons(){
  115.     var usingPassword = Lazarus.getBrowser().Lazarus.isPasswordSet();    
  116.     Lazarus.$('usePassword').checked = usingPassword
  117.     Lazarus.$('changePassword').hidden = !usingPassword;
  118.     Lazarus.$('resetPassword').hidden = !usingPassword;
  119.     Lazarus.getBrowser().Lazarus.refreshIcon();
  120. }
  121.  
  122.  
  123. /**
  124. */
  125. function init(){
  126.     
  127.     Lazarus.$('extensions-lazarus-saveSearchForms-box').hidden = !(Lazarus.getExtPref("includeExperimental", false));
  128.     Lazarus.$('remove-templates-box').hidden = !(Lazarus.getExtPref("includeExperimental", false));
  129.     Lazarus.$('extensions.lazarus.checkForUpdatesBeta').disabled = !(Lazarus.getExtPref("checkForUpdates"));
  130.     
  131.     initTextLinks();
  132.     refreshPasswordButtons();
  133.     initExpireSaveForms();
  134.     initRemoveForms();
  135.     initRemoveTemplates();
  136.     Lazarus.sizePrefWindowToContent();
  137.         if (!Lazarus.getPref("browser.preferences.animateFadeIn", false)){
  138.             restoreCustomSize();
  139.             window.addEventListener("resize", saveCustomSize, false);
  140.         }
  141.     
  142.     initDBStats();
  143. }
  144.  
  145. function initDBStats(){
  146.   var dbFile = Lazarus.file.getFile("%profile%/lazarus.sqlite");
  147.   Lazarus.$('db-path').value = Lazarus.getString('options.dbpath.label') +' '+ dbFile.path;
  148.   Lazarus.$('db-size').value = Lazarus.getString('options.dbsize.label') +' '+ (dbFile.fileSize /(1024 * 1024)).toFixed(2) +' MB';
  149.   
  150.   var dbFile = Lazarus.file.getFile("%profile%/lazarus-backup.sqlite");
  151.   var lastModified = (dbFile && dbFile.exists()) ?  new Date(dbFile.lastModifiedTime) : 0; 
  152.   Lazarus.$('db-backup').value = Lazarus.getString('options.dbbackup.label') +' '+ ((lastModified) ? Lazarus.formatDate(lastModified) : Lazarus.getString('options.dbbackup.nobackup'));
  153. }
  154.  
  155.  
  156.  
  157.  
  158.  
  159. function saveCustomSize(){
  160.     Lazarus.setPref("extensions.lazarus.optionsDialog.width", window.outerWidth);
  161.     Lazarus.setPref("extensions.lazarus.optionsDialog.height", window.outerHeight);
  162. }
  163.  
  164.  
  165. function restoreCustomSize(){
  166.     var width = Lazarus.getPref("extensions.lazarus.optionsDialog.width", window.outerWidth);
  167.     var height = Lazarus.getPref("extensions.lazarus.optionsDialog.height", window.outerHeight);
  168.     window.resizeTo(width, height);
  169. }
  170.  
  171. function askForPassword(){
  172.     var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
  173.     var password = {value: ""};
  174.     var check = {value: false};
  175.     
  176.         while(prompts.promptPassword(null, Lazarus.getBrowser().Lazarus.getString("password.dialog.title"), Lazarus.getBrowser().Lazarus.getString("password.dialog.label"), password, null, check)){
  177.                 if (Lazarus.getBrowser().Lazarus.loadPrivateKey(password.value)){
  178.             return password.value;
  179.         }
  180.         }
  181.         
  182.     return false;
  183. }
  184.  
  185.  
  186. /**
  187. */
  188. function onUsePassword(checkbox){
  189.     if (checkbox.checked){
  190.         //attempting to set a password, 
  191.         //open the set new password dialog box.
  192.         window.open("chrome://lazarus/content/password.xul", "LazarusSetPassword", "chrome,dialog,modal,resizable,centerscreen");
  193.         //we had better alter the UI to reflect any changes made to the password
  194.         Lazarus.getBrowser().Lazarus.unloadPrivateKey();
  195.         //if we were successful in setting a password then all is good,
  196.         //otherwise we need to uncheck the checkbox to show that no password was set.
  197.         refreshPasswordButtons();
  198.     }
  199.     //attempting to uncheck, if the user has a password, then we need to confirm they know the password before the change take effect.
  200.     else if (Lazarus.getBrowser().Lazarus.isPasswordSet()){
  201.         var oldPassword = askForPassword();
  202.         if (oldPassword){
  203.             //remove the password, 
  204.             var encb64Key = Lazarus.db.getStr("SELECT value FROM settings WHERE name = 'private-key'");
  205.             //we need to unencrypt the private key
  206.             var decb64Key = Lazarus.Crypto.AESDecrypt(encb64Key, oldPassword);
  207.     
  208.             //re-encrypt the private key with the new password, and save it.
  209.             var newb64Key = Lazarus.Crypto.AESEncrypt(decb64Key, '');
  210.         
  211.             //and save
  212.             Lazarus.db.exe("DELETE FROM settings WHERE name = 'private-key'");
  213.             Lazarus.db.exe("INSERT INTO settings (name, value) VALUES ('private-key', ?1)", newb64Key);
  214.             
  215.             //remove the password from the SSD if it exists
  216.             Lazarus.getBrowser().Lazarus.removePassword();   
  217.             
  218.             //since we've changed the password, we'd better log the user out 
  219.             Lazarus.getBrowser().Lazarus.unloadPrivateKey(); 
  220.         
  221.             //and log em in with the blank password
  222.             Lazarus.getBrowser().Lazarus.loadPrivateKey();
  223.         }
  224.         //and update the UI
  225.         refreshPasswordButtons();
  226.     }
  227. }
  228.  
  229. function onCleanDatabase(){
  230.   //disable the clean database button
  231.   Lazarus.$('extensions.lazarus.cleanDatabase').disabled = true;
  232.   Lazarus.$('extensions.lazarus.cleanDatabaseProgress').hidden = false;
  233.   
  234.   Lazarus.backgroundTask(function(){
  235.     Lazarus.db.exe("VACUUM");
  236.   }, function(){
  237.     Lazarus.$('extensions.lazarus.cleanDatabaseProgress').hidden = true;
  238.     Lazarus.$('extensions.lazarus.cleanDatabase').disabled = false;
  239.     initDBStats();
  240.   });
  241. }
  242.  
  243. function onRestoreDatabase(){
  244.     if (enterPassword() && window.confirm(Lazarus.getString("restoreDatabase.warning"))){
  245.     Lazarus.setPref("extensions.lazarus.restoreDatabase", true);
  246.             //this is the tricky bit, we need to close this dialog (modal)
  247.             //and then run some code on the main browser window
  248.             var main = Lazarus.getBrowser();
  249.             main.setTimeout(function(){
  250.               main.Lazarus.restart();
  251.             }, 100);
  252.             
  253.       window.close();
  254.   }
  255. }
  256.  
  257. function onDeleteDatabase(){
  258.     if (enterPassword() && window.confirm(Lazarus.getString("deleteDatabase.warning"))){
  259.             Lazarus.setPref("extensions.lazarus.deleteDatabase", true);
  260.             //this is the tricky bit, we need to close this dialog (modal)
  261.             //and then run some code on the main browser window
  262.             var main = Lazarus.getBrowser();
  263.             main.setTimeout(function(){
  264.               main.Lazarus.restart();
  265.             }, 100);
  266.             
  267.       window.close();
  268.     }
  269. }
  270.  
  271. /**
  272. */
  273. function openTextManager(){
  274.     Lazarus.getBrowser().Lazarus.openTextManager();
  275. }
  276.  
  277. //refresh the statusbar icon (if the user has set/unset their password)
  278. window.addEventListener("unload", Lazarus.getBrowser().Lazarus.refreshIcon, false);
  279.  
  280. Lazarus.showWindowSizeHelper();